{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introduction\n",
    "\n",
    "Gradient descent is a technique that helps us set the correct values for neural network parameters.  Without gradient descent, networks wouldn't be able to learn how to make predictions from data.  In this notebook, we'll learn about gradient descent by using it to train a linear regression model.\n",
    "\n",
    "Linear regression is a popular supervised machine learning algorithm that predicts a target given some input variables called predictors.  We'll use linear regression to predict tomorrow's temperature using historical data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "            tmax  tmin  rain  tmax_tomorrow\n1970-01-01  60.0  35.0   0.0           52.0\n1970-01-02  52.0  39.0   0.0           52.0\n1970-01-03  52.0  35.0   0.0           53.0\n1970-01-04  53.0  36.0   0.0           52.0\n1970-01-05  52.0  35.0   0.0           50.0",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>tmax</th>\n      <th>tmin</th>\n      <th>rain</th>\n      <th>tmax_tomorrow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>1970-01-01</th>\n      <td>60.0</td>\n      <td>35.0</td>\n      <td>0.0</td>\n      <td>52.0</td>\n    </tr>\n    <tr>\n      <th>1970-01-02</th>\n      <td>52.0</td>\n      <td>39.0</td>\n      <td>0.0</td>\n      <td>52.0</td>\n    </tr>\n    <tr>\n      <th>1970-01-03</th>\n      <td>52.0</td>\n      <td>35.0</td>\n      <td>0.0</td>\n      <td>53.0</td>\n    </tr>\n    <tr>\n      <th>1970-01-04</th>\n      <td>53.0</td>\n      <td>36.0</td>\n      <td>0.0</td>\n      <td>52.0</td>\n    </tr>\n    <tr>\n      <th>1970-01-05</th>\n      <td>52.0</td>\n      <td>35.0</td>\n      <td>0.0</td>\n      <td>50.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "# Read in the data\n",
    "data = pd.read_csv(\"../data/clean_weather.csv\", index_col=0)\n",
    "# Fill in any missing values in the data with past values\n",
    "data = data.ffill()\n",
    "\n",
    "# Show the first 5 rows of the data\n",
    "data.head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Linear Regression Intuition\n",
    "\n",
    "In our data, each row is a different day, and the columns are different weather observations associated with that day.  We have data from `1970` to the present.\n",
    "\n",
    "Using the data above, we could predict `tmax_tomorrow` based on today's max temperature (`tmax`), today's min temperature (`tmin`), and how much it rained today (`rain`).\n",
    "\n",
    "Linear regression requires a linear relationship between the predictors and the target.  If two values have a linear relationship, when one value changes, the other value changes proportionally.  We can visualize this with a scatter plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "<AxesSubplot: xlabel='tmax', ylabel='tmax_tomorrow'>"
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGwCAYAAABPSaTdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABb50lEQVR4nO3de1yUdd4//tdwkIPKwQFBDJFTpomFkQZYabp2dk23NtdVt/Wuuztd005qd3pvffOQW1a6llvrL3PrbrU789baDmaGCQQo4G3pIgiIihwFRkCMw/X7g51xruGameua81y8no8Hj4dcM3PNZ7hGeTvX63q/NYIgCCAiIiJSKR93L4CIiIjImVjsEBERkaqx2CEiIiJVY7FDREREqsZih4iIiFSNxQ4RERGpGosdIiIiUjU/dy/AE/T09KC6uhqDBw+GRqNx93KIiIhIBkEQcOnSJcTExMDHx/znNyx2AFRXVyM2NtbdyyAiIiIbnD17Ftdcc43Z21nsABg8eDCA3h9WSEiIm1dDREREcuh0OsTGxhp+j5vDYgcwnLoKCQlhsUNERORlrEVQGFAmIiIiVWOxQ0RERKrGYoeIiIhUjcUOERERqRqLHSIiIlI1FjtERESkaix2iIiISNVY7BAREZGqsdghIiIiVWOxQ0RERKrGcRFELlZe34ozF9sxUjsQ8RED3b0cIiLVY7FD5CLN7T9jyUfFOFRab9h2W3IkNs9JRWiwvxtXRkSkbjyNReQiSz4qRnZZg2hbdlkD/vBRkZtWRETUP7DYIXKB8vpWHCqtR7cgiLZ3CwIOldajoqHNTSsjIlI/FjtELnDmYrvF2ysbWewQETkLix0iF4gbEmzx9pFaBpWJiJyFxQ6RCyREDsJtyZHw1WhE2301GtyWHMmrsoiInIjFDpGLbJ6TisykCNG2zKQIbJ6T6qYVERH1D24tdg4dOoT7778fMTEx0Gg02LNnj+G2zs5OLF++HCkpKRg4cCBiYmIwf/58VFdXi/Zx8eJFzJ07FyEhIQgLC8PChQvR2trq4ldCZF1osD92LJyAg89MxnuP3IyDz0zGjoUTeNk5EZGTubXYaWtrww033IAtW7b0ua29vR2FhYVYtWoVCgsLsXv3bpSUlGDGjBmi+82dOxc//fQT9u/fj88++wyHDh3CY4895qqXQKRYfMRATBk1lKeuiIhcRCMIJtfCuolGo8Gnn36KmTNnmr1PQUEBJkyYgDNnzmDEiBE4efIkxowZg4KCAqSlpQEAvvzyS9xzzz04d+4cYmJiZD23TqdDaGgoWlpaEBIS4oiXQ0RERE4m9/e3V2V2WlpaoNFoEBYWBgDIzc1FWFiYodABgGnTpsHHxwd5eXlm93PlyhXodDrRFxEREamT1xQ7HR0dWL58OebMmWOo3mpqajB06FDR/fz8/DBkyBDU1NSY3de6desQGhpq+IqNjXXq2omIiMh9vKLY6ezsxEMPPQRBEPD222/bvb+VK1eipaXF8HX27FkHrJKIiIg8kccPAtUXOmfOnMG3334rOicXHR2Nuro60f27urpw8eJFREdHm91nQEAAAgICnLZmIiIi8hwe/cmOvtApLS3FN998A61WK7o9PT0dzc3NOHr0qGHbt99+i56eHkycONHVyyUiIiIP5NZPdlpbW1FWVmb4vqKiAsXFxRgyZAiGDRuGX/3qVygsLMRnn32G7u5uQw5nyJAhGDBgAEaPHo277roLjz76KLZu3YrOzk4sXrwYDz/8sOwrsYiIiEjd3Hrp+XfffYcpU6b02b5gwQL88Y9/RHx8vOTjDh48iMmTJwPobSq4ePFi7Nu3Dz4+Ppg9ezY2bdqEQYMGyV4HLz0nIiLyPnJ/f3tMnx13YrFDRETkfVTZZ4eIiIhIKRY7REREpGosdoiIiEjVWOwQERGRqrHYISIiIlVjsUNERESqxmKHiIiIVI3FDhEREakaix0iIiJSNRY7REREpGosdoiIiEjVWOwQERGRqrHYISIiIlVjsUNERESqxmKHiIiIVI3FDhEREakaix0iIiJSNRY7REREpGosdoiIiEjVWOwQERGRqrHYISIiIlVjsUNERESqxmKHiIiIVI3FDhEREakaix0iIiJSNRY7REREpGosdoiIiEjVWOwQERGRqrHYISIiIlVjsUNERESqxmKHiIiIVI3FDhEREakaix0iIiJSNRY7REREpGosdoiIiEjVWOwQERGRqrHYISIiIlVjsUNERESqxmKHiIiIVI3FDhEREakaix0iIiJSNRY7REREpGosdoiIiEjVWOwQERGRqrHYISIiIlVjsUNERESqxmKHiIiIVI3FDhEREakaix0iIiJSNRY7REREpGosdoiIiEjVWOwQERGRqrHYISIiIlXzc/cCiIjI+5TX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Z84cd70kVbN0vH7++WdhxowZwjXXXCMUFxcLFy5cMHxduXLFsA9PPF4sdtzMtNi5fPmy8MQTTwjh4eFCcHCw8MADDwgXLlxw3wL7sX379gljx44VAgIChOuuu0545513RLf39PQIq1atEqKiooSAgABh6tSpQklJiZtW27/pdDrhySefFEaMGCEEBgYKCQkJwn/+53+K/gHm8XKPgwcPCgD6fC1YsEAQBHnHpbGxUZgzZ44waNAgISQkRHjkkUeES5cuueHVqJ+l41VRUSF5GwDh4MGDhn144vHSCIJRi1EiIiIilWFmh4iIiFSNxQ4RERGpGosdIiIiUjUWO0RERKRqLHaIiIhI1VjsEBERkaqx2CEiIiJVY7FDREREqsZih4iIiFSNxQ4RebTJkydj6dKl7l4GEXkxFjtERESkaix2iMhj/e53v0NWVhbefPNNaDQaaDQabN++HRqNBl999RVSU1MRFBSEO+64A3V1dfjiiy8wevRohISE4De/+Q3a29sN+/ryyy8xadIkhIWFQavV4r777sPp06cNt+/YsQODBg1CaWmpYdsTTzyB6667TrQfIvI+HARKRB6rpaUFd999N8aOHYuXXnoJAPDTTz9h2rRpuOWWW/Dqq68iODgYDz30EIYPH46AgACsX78era2teOCBB/Dss89i+fLlAIBPPvkEGo0G48aNQ2trK1avXo3KykoUFxfDx6f3/30PPfQQKisrkZOTg6+++goPPPAAcnNzcdNNN7ntZ0BE9mOxQ0QebfLkybjxxhvxxhtvAAC+++47TJkyBd988w2mTp0KAFi/fj1WrlyJ06dPIyEhAQDw+OOPo7KyEl9++aXkfhsaGhAZGYnjx49j7NixAICmpiaMGzcO999/P3bv3o0lS5bg+eefd/6LJCKn4mksIvJK48aNM/w5KioKwcHBhkJHv62urs7wfWlpKebMmYOEhASEhIRg5MiRAICqqirDfcLDw7Ft2za8/fbbSExMxIoVK5z/QojI6fzcvQAiIlv4+/sb/qzRaETf67f19PQYvr///vsRFxeHd999FzExMejp6cHYsWPx888/ix536NAh+Pr64sKFC2hra8PgwYOd+0KIyOn4yQ4RebQBAwagu7vbrn00NjaipKQEL7zwAqZOnYrRo0ejqampz/1ycnLwyiuvYN++fRg0aBAWL15s1/MSkWfgJztE5NFGjhyJvLw8VFZWYtCgQaJPa+QKDw+HVqvFO++8g2HDhqGqqqrPKapLly5h3rx5WLJkCe6++25cc801uPnmm3H//ffjV7/6laNeDhG5AT/ZISKP9swzz8DX1xdjxoxBZGSkKGMjl4+PD/7+97/j6NGjGDt2LJYtW4Y//elPovs8+eSTGDhwINauXQsASElJwdq1a/Hv//7vOH/+vENeCxG5B6/GIiIiIlXjJztERESkaix2iIiISNVY7BAREZGqsdghIiIiVWOxQ0RERKrGYoeIiIhUjcUOERERqRqLHSIiIlI1FjtERESkaix2iIiISNVY7BAREZGq/f8hbHgqCEDJRwAAAABJRU5ErkJggg==\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data.plot.scatter(\"tmax\", \"tmax_tomorrow\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see above, `tmax` and `tmax_tomorrow` have a linear relationship - when `tmax` increases, `tmax_tomorrow` usually does as well.\n",
    "\n",
    "Intuitively, if we drew a line through the center of the cloud of points, we could use that line to predict `tmax_tomorrow` from `tmax`.  Since `tmax` is linearly related to `tmax_tomorrow`, the line will tell us what number to multiply `tmax` by to get a prediction for`tmax_tomorrow`.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "data": {
      "text/plain": "[<matplotlib.lines.Line2D at 0x137f2ba60>]"
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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+fMWHwMgxsfHm87hatdBEMVay4ISEREReRjW7BAREZFHY7JDREREHo3JDhEREXk0JjtERETk0ZjsEBERkUdjskNEREQejckOEREReTQmO0REROTRmOwQERGRR2OyQ0QubcSIEZg7d67UYRCRG2OyQ0RERB6NyQ4RuayHHnoICQkJePfddyEIAgRBwKeffgpBEPD9998jLi4O3t7euPnmm5Gbm4vdu3ejR48e8Pf3xz/+8Q9UVFSYzrVnzx4MGzYMgYGBCAkJwd13341z586ZHt+0aRP8/PyQlpZm2vbkk0+ie/fuZuchIvfDRqBE5LJKSkpwxx13oFevXnjllVcAAL///jtGjx6NG264AW+++SZ8fHwwceJEtGvXDmq1GitXrkRZWRnuu+8+LFy4EIsXLwYAfPvttxAEAX369EFZWRleeOEFZGRkICUlBTJZze99EydOREZGBo4cOYLvv/8e9913H44ePYrrr79esveAiJqPyQ4RubQRI0agb9++eOeddwAAP/74I0aOHIkffvgBo0aNAgCsXLkSS5cuxblz59C5c2cAwBNPPIGMjAzs2bPH4nnz8/MRFhaGU6dOoVevXgCAoqIi9OnTB2PGjMG2bdswZ84cPPvss85/kUTkVBzGIiK31KdPH9PPERER8PHxMSU6xm25ubmmv6elpWHKlCno3Lkz/P390alTJwBAZmamaZ+goCBs3LgR69evR5cuXbBkyRLnvxAicjqF1AEQETWFUqk0/SwIgtnfjdsMBoPp72PGjEHHjh3x0UcfISoqCgaDAb169YJGozE77uDBg5DL5cjKykJ5eTnatGnj3BdCRE7HOztE5NJUKhX0en2zzlFQUIDU1FQ8//zzGDVqFHr06IGioqJ6+x05cgSrVq3Czp074efnh6eeeqpZz0tEroF3dojIpXXq1AmJiYnIyMiAn5+f2d0aWwUFBSEkJAQffvgh2rZti8zMzHpDVFevXsWDDz6IOXPm4I477kD79u0xYMAAjBkzBhMmTHDUyyEiCfDODhG5tAULFkAul6Nnz54ICwszq7GxlUwmw1dffYXjx4+jV69emDdvHt544w2zfZ5++mn4+vpi+fLlAIDevXtj+fLlePzxx3H58mWHvBYikgZnYxEREZFH450dIiIi8mhMdoiIiMijMdkhIiIij8Zkh4iIiDwakx0iIiLyaEx2iIiIyKMx2SEiIiKPxmSHiIiIPBqTHSIiIvJoTHaIiIjIozHZISIiIo/2/61FIb3GY0SOAAAAAElFTkSuQmCC\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "data.plot.scatter(\"tmax\", \"tmax_tomorrow\")\n",
    "\n",
    "plt.plot([30,120], [30,120], 'green')"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "The above green line is multiplying `tmax` by `1` to get our predicted `tmax_tomorrow`.\n",
    "\n",
    "## Linear Regression Equation\n",
    "\n",
    "Linear regression works in a similar way - it learns the correct values to multiply the predictors by to get the target.  The equation for this looks like:\n",
    "\n",
    "$\\hat{y}=w_{1}x_{1} + w_{2}x_{2} + w_{3}x_{4} + b$\n",
    "\n",
    "- $\\hat{y}$ is our prediction for `tmax_tomorrow`.\n",
    "- $x_{1}$, $x_{2}$, and $x_{3}$ are the predictors that we're using to predict the target (in this case, `tmax`, `tmin`, and `rain`).  If we had more predictors, we would add more x values to our equation.\n",
    "- The $w$ values are the weight parameters that the linear regression algorithm learns.  The weights are what we multiply the $x$ values by to get the predicted $\\hat{y}$ value.\n",
    "- $b$ is a value called the bias (or y-intercept).  This enables us to \"shift\" the prediction line up or down to match the data.  Without a bias, if our predictors are all `0`, then our prediction will also be `0`.\n",
    "\n",
    "Let's take a look at how a linear regression model works.  To simplify things, we will go with just a single predictor (`tmax`)."
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "[<matplotlib.lines.Line2D at 0x16dd9d4e0>]"
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Fit a linear regression model\n",
    "lr = LinearRegression()\n",
    "lr.fit(data[[\"tmax\"]], data[\"tmax_tomorrow\"])\n",
    "\n",
    "# Plot our data points and the regression line\n",
    "data.plot.scatter(\"tmax\", \"tmax_tomorrow\")\n",
    "plt.plot(data[\"tmax\"], lr.predict(data[[\"tmax\"]]), color=\"green\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the above cell, we fit a linear regression model using a library called `scikit-learn`.  The data points are in blue, and the linear regression line (predicted temperatures) is in green.\n",
    "\n",
    "We can take a look at the coefficients for the line below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Weight: 0.82\n",
      "Bias: 11.99\n"
     ]
    }
   ],
   "source": [
    "print(f\"Weight: {lr.coef_[0]:.2f}\")\n",
    "print(f\"Bias: {lr.intercept_:.2f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our predictions for `tmax_tomorrow` will be $\\hat{y}=.82 * \\text{tmax} + 11.99$.  Now let's learn how to build our own linear regression algorithm.\n",
    "\n",
    "## Calculating Loss\n",
    "\n",
    "Earlier, I mentioned that we'd train our linear regression algorithm using gradient descent.  To make gradient descent work, we first need to calculate our loss.\n",
    "\n",
    "Let's say today's `tmax` is `80`.  Using the equation, we can calculate our predicted `tmax_tomorrow` to be `77.59`. Then we can calculate our loss.  Loss is a measure of the difference between the actual values and our predictions.  With linear regression, it's common to use squared error.  We calculate it using the formula $\\text{MSE}=(\\hat{y} - y) ^ 2$.\n",
    "\n",
    "If the actual `tmax_tomorrow` is `81`, then our loss is $(77.59 - 81) ^ 2$, which equals `11.63`.\n",
    "\n",
    "Our parameters (weight and bias) led to this loss value.  If we change the weight, our loss will also change.  Let's visualize what it would look like if our weight value was `1`.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "[<matplotlib.lines.Line2D at 0x16de4f070>]"
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "# Function to calculate the loss\n",
    "loss = lambda w,y: ((w * 80 + 11.99) - y) ** 2\n",
    "# Actual temperature tomorrow\n",
    "y = 81\n",
    "# Calculate loss values for several weights\n",
    "ws = np.arange(-1,3,.1)\n",
    "losses = loss(ws, y)\n",
    "\n",
    "# Plot the weight and losses\n",
    "plt.scatter(ws, losses)\n",
    "# Plot a weight of 1 and the corresponding loss\n",
    "plt.plot(1, loss(1, y), 'ro')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the plot above, we've graphed the weight values on the x-axis, and the corresponding losses on the y-axis.  As you can see, there is a value at the bottom of the graph where loss is the lowest.  Loss increases if the weight is higher or lower than that value.  This is called the global minimum, and it's our goal to reach this value.\n",
    "\n",
    "We've marked our weight value of `1` in red.  It's close to the global minimum, but not quite there.  This is where gradient descent comes into play - it helps us adjust our parameters to reduce loss.\n",
    "\n",
    "First, we calculate the loss when the weight is `1`.  This equals `120.78` - $((1 * 80 + 11.99) - 81) ^ 2$.  We then have to figure out how much each parameter contributes to that loss.\n",
    "\n",
    "## Parameter Updates\n",
    "\n",
    "To understand how we do this, let's first take a look at the operations we perform to get a prediction.  This can also be called a computational graph:\n",
    "\n",
    "![Operations](images/linreg/gradient.svg)\n",
    "\n",
    "As you can see, we take our input data (`tmax`), multiply it by the weight $w$, then add in the bias $b$ to get our prediction.\n",
    "\n",
    "To make the prediction closer to the correct value, we need to adjust $w$ and $b$.  We need to know how much to adjust them, and in which direction (up or down).\n",
    "\n",
    "To figure this out, we take the partial derivative of the loss against $w$ and $b$.  This is a math way of saying \"we're going to figure out how much each parameter contributes to our loss\".\n",
    "\n",
    "We start by calculating the gradient of our loss.  This tells us how quickly our loss is changing.  We want to move in the direction where loss is decreasing the fastest.  We can calculate this by taking the derivative of our loss metric, which is $2 * (\\hat{y} - {y})$. This shows us how quickly our loss is changing:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "data": {
      "text/plain": "[<matplotlib.lines.Line2D at 0x16e1e2b00>]"
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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PjN27NhhPPDAA0ZaWprxv//7v/HahIBKS0sNm81mbNiwwTh48KDv8ve//903Jhk+m+Fspxk/m3PnzjU2btxo1NfXG9u3bzfmzp1rWCwW429/+5thGNF7LwkzIZo6daohqdXlvffe842RZLzwwgu+6x6Px3j44YeNvLw8w2q1Gtddd52xZ8+e2E8+BN99950xefJko1u3bkZWVpZx9913+wW2+vp6v+3et2+fcdVVVxk5OTmG1Wo1Bg4caMyePdtobGyM0xa07U9/+pPRt29fIyMjwxg5cqTx0Ucf+e67+uqrjalTp/qNf+ONN4wLL7zQyMjIMC6++GLjnXfeifGMwxPKdpaXl/vG5uXlGddff72xdevWOMw6eN4lyGdevNs1depU4+qrr271mGHDhhkZGRlG//79/T6jiSrU7XzssceMAQMGGJmZmUZOTo5xzTXXGOvXr4/P5IPU1vad+WdoMnw2w9lOM34277nnHuP88883MjIyjNzcXOO6667zBRnDiN57aTEMwwhtXw4AAEDi4JwZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgav8HNq/tMT+fuWkAAAAASUVORK5CYII=\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Function to calculate the gradient\n",
    "gradient = lambda w,y: ((w * 80 + 11.99) - y) * 2\n",
    "# Calculate gradient values for several weights\n",
    "gradients = gradient(ws, y)\n",
    "\n",
    "# Plot the weight and gradients\n",
    "plt.scatter(ws, gradients)\n",
    "plt.plot(1, gradient(1,y), 'ro')"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "If our weight is above a certain value (around `.82`), then our gradient is positive, and our predictions are too large.  If it is below the value, then our gradient is negative, and our predictions are too small.  Our current gradient is `21.98` - $((1 * 80 + 11.99) - 81) * 2$\n",
    "\n",
    "With gradient descent, our goal is to get to a place where the gradient is close to `0` (our predictions match the actual values).  Hopefully this area will be a global minimum. Sometimes it will be a local minimum instead, which we'll discuss further later on.\n",
    "\n",
    "The partial derivative with respect to the loss gradient tells us how much to adjust each parameter to lower the loss.  First, let's take the partial derivative with respect to $b$:\n",
    "\n",
    "$\\frac{\\partial L}{\\partial b}=\\partial L$\n",
    "\n",
    "The intuitive way to think about this is \"how would I change $b$ if I wanted to get the predictions closer to the actuals?\".  Because you add $b$ to $x * w$ to get the prediction, any change to $b$ directly impacts the prediction.  So the partial derivative of $b$ with respect to the loss is the same as the loss!\n",
    "\n",
    "![B derivative](images/linreg/b_deriv.svg)\n",
    "\n",
    "Next, we take the partial derivative with respect to $w$.  This is a little more complicated, since we multiply $w$ by $x$, then add it to $b$ to get our prediction:\n",
    "\n",
    "$\\frac{\\partial L}{\\partial w}=\\frac{\\partial L}{\\partial (x*w)}\\frac{\\partial (x*w)}{\\partial w}$\n",
    "\n",
    "We use the chain rule to find the derivative.  The chain rule says that the partial derivative of $a$ with respect to $c$ equals the partial derivative of $a$ with respect to $b$ times the partial derivative of $b$ with respect to $c$.\n",
    "\n",
    "Similar to what we saw with $b$, $\\frac{\\partial L}{\\partial (x*w)}$ is just the same as $\\partial L$, since we add $x*w$ to $b$ to get the loss.\n",
    "\n",
    "So we can update the equation to:\n",
    "\n",
    "$\\frac{\\partial L}{\\partial w}=\\partial L\\frac{\\partial (x*w)}{\\partial w}$\n",
    "\n",
    "Since we multiply $w$ by $x$, any change to $w$ will change the prediction proportional to $x$.  So:\n",
    "\n",
    "$\\frac{\\partial L}{\\partial w}=\\partial L * x$\n",
    "\n",
    "![W derivative](images/linreg/w_deriv.svg)\n",
    "\n",
    "After calculating the partial derivatives, we update our $w$ and $b$ values by subtracting the partial derivatives from the current values.  We don't want to subtract the entire partial derivative, though - this would change the weight too much:"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [
    {
     "data": {
      "text/plain": "[<matplotlib.lines.Line2D at 0x176fea590>]"
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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gQODbu2Nx/F19N5775nf//73pra21uzatcusXbvWDBw40EybNs3XJlL/ZuNJvPz+UzKMGGPMX//6VzN+/HjjcDjMkCFDzKJFiwLufemll8zw4cNNenq6ueiii8ymTZv83vd4PGbevHkmKyvLOBwO88Mf/tB89NFH0RyOMcaY999/31x99dWmf//+xuFwmLy8PDNr1izz+eef+9qsWbPGXHjhhaZv374mIyPDFBQUmA0bNiTEGEMZnzGJ+xmuXr3aSAr65ZXIn1+oYzQmcT9DY4yZPn160PF5n9796U9/MqNHjzann366Oe2008yoUaPMihUrjNvt9vs+b7/9thk9erRJT0835557rlm9enXAz1q6dKk5++yzTXp6uikoKDBbtmyxfHzGGLNnzx5z3XXXmT59+pjMzExz7733mm+++cbv+8Tr+DraunWrKSwsNC6XyzidTnPhhReaBQsW+P4HkFck/s3Gm3j4/duMieMVgQAAIOklzG4aAACQnAgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALDU/wdpBR4wUnWFIwAAAABJRU5ErkJggg==\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ws = np.arange(-4000,100,100)\n",
    "losses = loss(ws, y)\n",
    "\n",
    "# Plot the weight and losses\n",
    "plt.scatter(ws, losses)\n",
    "\n",
    "# Original weight\n",
    "plt.plot(1, loss(1, y), 'ro')\n",
    "# New weight\n",
    "new_weight = 1-gradient(1,y) * 80\n",
    "plt.plot(new_weight, loss(new_weight, y), 'go')"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## Learning Rate\n",
    "\n",
    "Above, you can see the original weight in red, and the new weight is in green.  You might notice that the error is actually higher with the new weight.  This is because we took too large of a step.  This is a common problem with gradient descent - we adjust our parameters so much that we overshoot the minimum and end up with higher error.\n",
    "\n",
    "This happens because the partial derivative doesn't know that the gradient will change in between the old weight value and the new weight value.  Since we're taking the derivative at a single point, it assumes that the gradient will stay constant.  Instead, as we can see in the chart below, the gradient changes quite a bit between the old weight and the new weight:"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [
    {
     "data": {
      "text/plain": "[<matplotlib.lines.Line2D at 0x177081ab0>]"
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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jaYJABAVyF1Ca6NpAgBEBXKX0NpomgAAEcFf9hK5S2ht3D0HAGh1gWYvkbuE1kROUwiR0wQAwWtO9hK5SwglcpoAABGvudlL5C6hNbCmCQDQasheQjQJW9N04MAB5efnKyMjQ+3bt1ffvn01f/58nT592qtu586duuaaa5SYmKj09HQtXry4wbHWrFmj/v37KzExUYMGDdL69eu99htjVFhYqNTUVLVv3145OTn6+OOPvWrKy8s1YcIEJSUlKTk5Wfn5+frmm2+CHgsAIHTIXkI0CVvTtHfvXtXU1Oj3v/+9ysrK9MQTT2jFihV64IEHrBqPx6MbbrhBF198sUpLS7VkyRItWLBAzz33nFWzadMmjR8/Xvn5+dq2bZvy8vKUl5en3bt3WzWLFy/W0qVLtWLFCm3evFkdO3ZUbm6uTp367l+yCRMmqKysTMXFxVq7dq3effddTZ48OaixAABCi+wlRJMWXQi+ZMkSLV++XJ999pkkafny5XrwwQfldruVkJAgSZo7d65ee+017d27V5J066236uTJk1q7dq11nGHDhikrK0srVqyQMUZpaWmaNWuWfvnLX0qSKisrlZKSopUrV2rcuHHas2ePMjMz9cEHH2jIkCGSpKKiIv3whz/U4cOHlZaWFtBY/GEhOAAEp7rGaMRvNspdecrnuiabau+M+98532ehN8Im0O/vFl3TVFlZqS5dvgsdKykp0bXXXms1KZKUm5urffv26euvv7ZqcnJyvI6Tm5urkpISSdL+/fvldru9ahwOh7Kzs62akpISJScnWw2TJOXk5CguLk6bN28OeCznqqqqksfj8doAAIEjewnRpMWapk8++UTLli3TlClTrOfcbrdSUlK86uoeu93uJmvq76//usZqevTo4bX/ggsuUJcuXfy+T/33ONfChQvlcDisLT09vakfAQC0Of4CK6XvspecDu9LcE5Hos+4AaC1BB05MHfuXP3mN79psmbPnj3q37+/9fiLL77Q6NGjdcstt2jSpEnBjzJCzZs3TwUFBdZjj8dD4wQA/xJoYKVU2ziNynSSvYSIFnTTNGvWLE2cOLHJmj59+lj/fOTIEY0cOVLDhw9vsKja6XTq2LFjXs/VPXY6nU3W1N9f91xqaqpXTVZWllVz/Phxr2OcPXtW5eXlft+n/nucy263y263+9wHAG1ZY4GV7spTmvbi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uvbaa60mRZJyc3O1b98+ff3111ZNTk6O17Fyc3NVUlIiSdq/f7/cbrdXjcPhUHZ2tlVTUlKi5ORkq2GSpJycHMXFxWnz5s0Bj+VcVVVV8ng8XhuAtqkue+ncO+Pclac07cWtKtp91Ov50QNT9b9zvq+XJw3TU+Oy9PKkYfrfOd+nYQIiWNibpjlz5qhjx47q2rWrDh48qNdff93a53a7lZKS4lVf99jtdjdZU39//dc1VtOjRw+v/RdccIG6dOni933qv8e5Fi5cKIfDYW3p6elN/SgAxChf2Ut16p771d8+8nmpztW3q36cdZFcfbtySQ6IcEE3TXPnzpXNZmtyq3856/7779e2bdv09ttvKz4+Xnfeeada8IpgWM2bN0+VlZXWdujQodYeEoBW4Ct7qT4j6WjlKW3ZX95ygwIQckFHDsyaNUsTJ05ssqZPnz7WP3fr1k3dunXTZZddpgEDBig9PV3vv/++XC6XnE6njh075vXausdOp9P601dN/f11z6WmpnrVZGVlWTXHjx/3OsbZs2dVXl7u933qv8e57Ha77HZ7kz8LALGvseyl5tYBiExBn2nq3r27+vfv3+RWf11QfTU1NZJq1wJJksvl0rvvvqszZ85YNcXFxerXr586d+5s1WzYsMHrOMXFxXK5XJKkjIwMOZ1OrxqPx6PNmzdbNS6XSxUVFSotLbVqNm7cqJqaGmVnZwc8FgDwpanspebUAYhMYVvTtHnzZj399NPavn27Pv/8c23cuFHjx49X3759rWbmtttuU0JCgvLz81VWVqbVq1frqaeeUkFBgXWce++9V0VFRXr88ce1d+9eLViwQB9++KFmzJghSbLZbJo5c6YeffRRvfHGG9q1a5fuvPNOpaWlKS8vT5I0YMAAjR49WpMmTdKWLVv03nvvacaMGRo3bpzS0tICHgsA+OIve8mm2jvjhmZ0aclhAQg1EyY7d+40I0eONF26dDF2u9307t3bTJ061Rw+fNirbseOHWbEiBHGbrebiy66yCxatKjBsV599VVz2WWXmYSEBHP55ZebdevWee2vqakxDz/8sElJSTF2u91cf/31Zt++fV41//znP8348eNNp06dTFJSkrn77rvNiRMngh5LUyorK40kU1lZGdTrAES/N3cdMb3nrDW956w1F9fb6p57c9eR1h4igEYE+v3dojlNsY6cJiA2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N1enTn13+WTChAkqKytTcXGx1q5dq3fffVeTJ08Oaixo2wisBIC2LayX53r37q2ZM2dq5syZPvcvX75cDz74oNxutxISEiRJc+fO1Wuvvaa9e/dKkm699VadPHlSa9eutV43bNgwZWVlacWKFTLGKC0tTbNmzdIvf/lLSVJlZaVSUlK0cuVKjRs3Tnv27FFmZqY++OADDRkyRJJUVFSkH/7whzp8+LDS0tICGos/XJ6Lba9v/0L3vrLdb91T47L046yLwj8gAEBIRMTlOUlatGiRunbtqiuvvFJLlizR2bNnrX0lJSW69tprrSZFknJzc7Vv3z59/fXXVk1OTo7XMXNzc1VSUiJJ2r9/v9xut1eNw+FQdna2VVNSUqLk5GSrYZKknJwcxcXFafPmzQGP5VxVVVXyeDxeG2IXgZUA0LaFtWn6xS9+oVdeeUXvvPOOpkyZol//+teaPXu2td/tdislJcXrNXWP3W53kzX199d/XWM1PXr08Np/wQUXqEuXLn7fp/57nGvhwoVyOBzWlp6e3tSPA1GOwEoAaNuCbprmzp3bYHH3uVvd5ayCggJdd911+t73vqepU6fq8ccf17Jly1RVVRXyibSGefPmqbKy0toOHTrU2kPCefCXvURgJQC0bUHnNM2aNUsTJ05ssqZPnz4+n8/OztbZs2d14MAB9evXT06nU8eOHfOqqXvsdDqtP33V1N9f91xqaqpXTVZWllVz/Phxr2OcPXtW5eXlft+n/nucy263y263+9yH6BJo9lJdYOW5tc5GcpoAALEj6Kape/fu6t69e7PebPv27YqLi7MulblcLj344IM6c+aM2rVrJ0kqLi5Wv3791LlzZ6tmw4YNXovJi4uL5XK5JEkZGRlyOp3asGGD1SR5PB5t3rxZ06ZNs45RUVGh0tJSDR48WJK0ceNG1dTUKDs7O+CxIDY1lr3krjylaS9ubZC9RGAlALRNYVvTVFJSoieffFI7duzQZ599ppdeekn33Xefbr/9dqsJue2225SQkKD8/HyVlZVp9erVeuqpp1RQUGAd595771VRUZEef/xx7d27VwsWLNCHH36oGTNmSJJsNptmzpypRx99VG+88YZ27dqlO++8U2lpacrLy5MkDRgwQKNHj9akSZO0ZcsWvffee5oxY4bGjRuntLS0gMeC2NPc7KX4OJtcfbvqx1kXydW3Kw0TALQBYfs1Kna7Xa+88ooWLFigqqoqZWRk6L777vNqQhwOh95++21Nnz5dgwcPVrdu3VRYWOiVnzR8+HCtWrVKDz30kB544AFdeumleu211zRw4ECrZvbs2Tp58qQmT56siooKjRgxQkVFRUpM/O4uppdeekkzZszQ9ddfr7i4OI0dO1ZLly4NaiyIPcFkL7n6dm25gQEAIg6/RiWEyGmKPmQvAQAiJqcJiGRkLwEAAkXThDaN7CUAQKBomtCmkb0EAAgUTRNilr+wyjp12UtOh/clOKcjsUHcAACg7Qrb3XNAawo0rLIO2UsAAH+4ey6EuHsuMjQWVlnX/nD2CABQH3fPoU1qblglAAD+0DQhpgQTVgkAQDBomhBTjp9ovGFqTh0AAHVomhBTCKsEAIQLTRNiCmGVAIBwoWlCVPGXvURYJQAgXMhpQtQINHupLqzy3FpnEzlNAAD4Q05TCJHTFD7NyV6qrjGEVQIA/Ar0+5szTYh4/rKXbKrNXhqV6fRqiuLjbHL17dpSwwQAxDjWNCHikb0EAIgENE2IeGQvAQAiAU0TIh7ZSwCASEDThIhH9hIAIBLQNKHVkb0EAIgG3D2HVkX2EgAgWpDTFELkNAWH7CUAQCQgpwkRjewlAEC0YU0TWgXZSwCAaEPThFZB9hIAINrQNKFVkL0EAIg2NE1oFWQvAQCiDU0TWgXZSwCAaEPThLDwF1gpfZe95HR4X4JzOhJ9xg0AANCaiBxAyAUaWCnVNk6jMp1kLwEAIh7hliFEuGXzAisBAGhNgX5/c3kOIeMvsFKqDaz0dakOAIBIR9OEkCGwEgAQy2iaEDIEVgIAYhlNE0KGwEoAQCyjaULIEFgJAIhlNE0ISCC5SwRWAgBiGTlN8CvY3KXlt1/VoN7ZSD0AANGCnKYQisWcpubmLlXXGAIrAQBRIdDvb840oVH+cpdsqs1dGpXpbNAQxcfZ5OrbtSWGCQBAi2BNExpF7hIAAN8Ja9O0bt06ZWdnq3379urcubPy8vK89h88eFBjxoxRhw4d1KNHD91///06e/asV83f//53XXXVVbLb7brkkku0cuXKBu/zzDPPqHfv3kpMTFR2dra2bNnitf/UqVOaPn26unbtqk6dOmns2LE6duxY0GNpa8hdAgDgO2Frmv7yl7/ojjvu0N13360dO3bovffe02233Wbtr66u1pgxY3T69Glt2rRJL7zwglauXKnCwkKrZv/+/RozZoxGjhyp7du3a+bMmfr5z3+ut956y6pZvXq1CgoKNH/+fG3dulVXXHGFcnNzdfz4cavmvvvu09/+9jetWbNG//jHP3TkyBH95Cc/CWosbRG5SwAAfCcsC8HPnj2r3r1761e/+pXy8/N91rz55pu68cYbdeTIEaWkpEiSVqxYoTlz5ujLL79UQkKC5syZo3Xr1mn37t3W68aNG6eKigoVFRVJkrKzs3X11Vfr6aefliTV1NQoPT1d99xzj+bOnavKykp1795dq1at0s033yxJ2rt3rwYMGKCSkhINGzYsoLEEItYWglfXGI34zUa5K0/5XNdkU+1dcf875/ss8gYARK1W/YW9W7du1RdffKG4uDhdeeWVSk1N1Q9+8AOv5qekpESDBg2ymhRJys3NlcfjUVlZmVWTk5Pjdezc3FyVlJRIkk6fPq3S0lKvmri4OOXk5Fg1paWlOnPmjFdN//791atXL6smkLH4UlVVJY/H47XFEnKXAAD4Tliaps8++0yStGDBAj300ENau3atOnfurOuuu07l5bWLht1ut1eTIsl67Ha7m6zxeDz69ttv9dVXX6m6utpnTf1jJCQkKDk5uckaf2PxZeHChXI4HNaWnp7e9A8mwgQSWFmXu+R0eF+CczoSG40bAAAgFgUVOTB37lz95je/abJmz549qqmpkSQ9+OCDGjt2rCTp+eefV8+ePbVmzRpNmTKlmcONLPPmzVNBQYH12OPxRE3jFGxg5ahMJ7lLAIA2LaimadasWZo4cWKTNX369NHRo0clSZmZmdbzdrtdffr00cGDByVJTqezwV1udXe0OZ1O689z73I7duyYkpKS1L59e8XHxys+Pt5nTf1jnD59WhUVFV5nm86t8TcWX+x2u+x2exM/jcjUWGClu/KUpr241ecZJHKXAABtXVCX57p3767+/fs3uSUkJGjw4MGy2+3at2+f9dozZ87owIEDuvjiiyVJLpdLu3bt8rrLrbi4WElJSVaz5XK5tGHDBq8xFBcXy+VySZL1XvVrampqtGHDBqtm8ODBateunVfNvn37dPDgQasmkLHECn+BlVJtYKWvS3UAALRlYVnTlJSUpKlTp2r+/Pl6++23tW/fPk2bNk2SdMstt0iSbrjhBmVmZuqOO+7Qjh079NZbb+mh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vdSMGzfOnD17NqDXRNNn6G9+sfAZGtP0QvBzPfroo6Zz587W49mzZ5uBAwd61YwfP77BIukZM2ZYj6urq81FF10UUQvB699p9fvf/94kJSWZU6dOGWOiZ46+vPjiiyYuLs6Ul5cbY0LzdzbSRMrPnqYpgvi6C6miosKkpKSYO+64w+zevdu88sorpkOHDg1uHb3gggvMb3/7W7Nnzx4zf/58n7c7Jycnm9dff93s3LnT/PjHPw777c7vv/++WbZsmdm2bZs5cOCA2bBhgxk+fLjp27ev9R+qlStXmlWrVpk9e/aYPXv2mMcee8zExcWZP/3pTzExv2j+/IypbSguueQSc/3115vDhw973eJcJ5o/w0DmF+2f4eeff262bdtmfvWrX5lOnTqZbdu2mW3btpkTJ04YY4x54403zB/+8Aeza9cu8/HHH5tnn33WdOjQwRQWFlrHqLsd//777zd79uwxzzzzjM/b8e12u1m5cqX56KOPzOTJk01ycrLXHWutNce6yIEbbrjBbN++3RQVFZnu3bv7jByI1DnW2bRpk3niiSfM9u3bzaeffmpefPFF0717d3PnnXdaNaH6OxtJIuFnbwxNU0Rp7NbtHTt2mBEjRhi73W4uuugis2jRogavffXVV81ll11mEhISzOWXX27WrVvntb+mpsY8/PDDJiUlxdjtdnP99debffv2hXM6ZufOnWbkyJGmS5cuxm63m969e5upU6eaw4cPWzUrV640AwYMMB06dDBJSUlm6NChZs2aNTEzP2Oi9/Mzpvb/3CX53OpE82cYyPyMie7P8K677vI5v7qzoW+++abJysoynTp1Mh07djRXXHGFWbFihamurvY6zjvvvGOysrJMQkKC6dOnj3n++ecbvNeyZctMr169TEJCghk6dKh5//33wz4/Y/zP0RhjDhw4YH7wgx+Y9u3bm27duplZs2aZM2fOeB0nkudYp7S01GRnZxuHw2ESExPNgAEDzK9//Wvrf9TqhOLvbKRp7Z+9McbYjInwFasAAAARgLvnAAAAAkDTBAAAEACaJgAAgADQNAEAAASApgkAACAANE0AAAABoGkCAAAIAE0TAABAAGiaAAAAAkDTBAAAEACaJgAAgADQNAEAAATg/wNR+kGebnlnlQAAAABJRU5ErkJggg==\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "# Calculate gradient values for several weights\n",
    "gradients = gradient(ws, y)\n",
    "\n",
    "# Plot the weight and gradients\n",
    "plt.scatter(ws, gradients)\n",
    "plt.plot(1, gradient(1, y), 'ro')\n",
    "# New weight\n",
    "plt.plot(new_weight, gradient(new_weight, y), 'go')"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "To adjust for this, we use a learning rate.  Instead of adjusting the weights and biases directly by the partial derivative, we multiply by the learning rate.  This enables us to take a smaller step, and stay in a region where the gradient doesn't change too much:"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "outputs": [
    {
     "data": {
      "text/plain": "[<matplotlib.lines.Line2D at 0x17710a1a0>]"
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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nDbauXOnkWQ2b97sW/anP/3J2Gw28+mnn7b4umuvvdbce++9La5/5513TFRUlN8f1oKCAmO32019fX1A2t4e7e3v1y1fvtzExMSYEydO+Ja15pc2mIYPH26mTZvme97Q0GBSU1PN/Pnzm62/5ZZbzKhRo/yWZWRkmP/+7/82xhjj9XqN0+k0TzzxhG/90aNHTWxsrHnttdeC0IO2aWt/v+7kyZMmPj7evPzyy75lkyZNMjfddFOgm3rO2trXl156yTgcjha3F8779lz3669//WsTHx9vjh075lsWrvv1dK35+/HQQw+ZSy+91G/ZrbfearKzs33Pz/Xz6yjt/XuZnp5u8vPzfc/z8vLM0KFDA9ewMMdwVRsVFxcrISFBV155pW9ZVlaWoqKitGnTpjO+9pVXXlHv3r01ePBgzZkzR1988YXfdocMGaLk5GTfsuzsbHk8HpWXlwe+I610Lv09ndvtlt1uV5cu/rdLmzZtmnr37q3hw4frxRdflOmgaZu++uorlZaWKisry7csKipKWVlZKi4ubvY1xcXFfvXSqX3UWF9RUSGXy+VX43A4lJGR0eI2O0p7+vt1X3zxhU6cOKHExES/5evXr1dSUpIGDhyoqVOn6siRIwFte1u1t6/Hjh1T//791a9fP910001+v3fhum8DsV9feOEFjRs3Tt27d/dbHm77tT3O9jsbiM8vnHm9XtXW1jb5nd27d69SU1N1wQUXaMKECTpw4ECIWhh8EX2DzvZwuVxKSkryW9alSxclJibK5XK1+LrbbrtN/fv3V2pqqrZv365Zs2Zpz549euONN3zbPT3gSPI9P9N2g629/T3dv/71Lz3++OOaMmWK3/LHHntM3//+93Xeeefpz3/+s/7nf/5Hx44d089+9rOAtf9MbWpoaGj2M9+9e3ezr2lpHzV+Do3/PVNNqLSnv183a9Yspaam+n0h5OTk6Oabb1ZaWpr279+v//3f/9UNN9yg4uJiRUdHB7QPrdWevg4cOFAvvviiLrvsMrndbj355JP69re/rfLycvXt2zds9+257teSkhKVlZXphRde8Fsejvu1PVr6nfV4PPryyy/1+eefn/PvRTh78skndezYMd1yyy2+ZRkZGVqyZIkGDhyoyspK5efn65prrlFZWZni4+ND2NrgIOT82+zZs7Vw4cIz1uzatavd2z/9C37IkCFKSUnRddddp/3792vAgAHt3m57Bbu/jTwej0aNGqX09HTNmzfPb92jjz7q+/8rrrhCx48f1xNPPNEhIQdts2DBAi1btkzr16/3OyF33Lhxvv8fMmSILrvsMg0YMEDr16/XddddF4qmtktmZqYyMzN9z7/97W/rkksu0R/+8Ac9/vjjIWxZcL3wwgsaMmSIhg8f7rfcKvs1kr366qvKz8/XW2+95fcP1RtuuMH3/5dddpkyMjLUv39/LV++XLm5uaFoalARcv7t/vvv15133nnGmgsuuEBOp1PV1dV+y0+ePKmamho5nc5Wv19GRoYkad++fRowYICcTmeTM/qrqqokqU3bba2O6G9tba1ycnIUHx+vN998U127dj1jfUZGhh5//HHV19cH/d4rvXv3VnR0tO8zblRVVdViv5xO5xnrG/9bVVWllJQUv5rLL788gK1vu/b0t9GTTz6pBQsW6C9/+Ysuu+yyM9ZecMEF6t27t/bt2xeyL8Nz6Wujrl276oorrtC+ffskhe++PZe+Hj9+XMuWLdNjjz121vcJh/3aHi39ztrtdnXr1k3R0dHn/LMSjpYtW6a7775bK1asaDJc93UJCQm6+OKLfT/rVsM5Of/Wp08fDRo06IyPmJgYZWZm6ujRoyotLfW9dt26dfJ6vb7g0hrbtm2TJN8fzMzMTO3YscMvUBQVFclutys9PT0wnTxNsPvr8Xg0cuRIxcTE6O23325yOW5ztm3bpp49e3bIzeViYmL0rW99S2vXrvUt83q9Wrt2rd+/6E+XmZnpVy+d2keN9WlpaXI6nX41Ho9HmzZtanGbHaU9/ZWkRYsW6fHHH1dhYaHfeVktOXTokI4cOeIXBDpae/t6uoaGBu3YscPXj3Ddt+fS1xUrVqi+vl4TJ0486/uEw35tj7P9zgbiZyXcvPbaa7rrrrv02muv+U0L0JJjx45p//79nW7ftlqoz3zujHJycswVV1xhNm3aZP72t7+Ziy66yO+S6kOHDpmBAweaTZs2GWOM2bdvn3nsscfMRx99ZCoqKsxbb71lLrjgAjNixAjfaxovIR85cqTZtm2bKSwsNH369AmbS8jb0l+3220yMjLMkCFDzL59+/wuVTx58qQxxpi3337bPP/882bHjh1m79695ve//70577zzzNy5czusX8uWLTOxsbFmyZIlZufOnWbKlCkmISHBd4Xb7bffbmbPnu2r37hxo+nSpYt58sknza5du0xeXl6zl5AnJCSYt956y2zfvt3cdNNNYXGZsTFt7++CBQtMTEyM+b//+z+/fVhbW2uMMaa2ttY88MADpri42FRUVJi//OUvZtiwYeaiiy4ydXV1Ieljo7b2NT8/37z77rtm//79prS01IwbN87ExcWZ8vJyX0247tu29rXR1VdfbW699dYmy8N5v9bW1pqtW7earVu3GknmV7/6ldm6dav55JNPjDHGzJ4929x+++2++sZLyB988EGza9cu8+yzzzZ7CfmZPr9Qamt/X3nlFdOlSxfz7LPP+v3OHj161Fdz//33m/Xr15uKigqzceNGk5WVZXr37m2qq6s7vH8dgZDTDkeOHDHjx483PXr0MHa73dx1112+P/zGGFNRUWEkmffee88YY8yBAwfMiBEjTGJioomNjTUXXnihefDBB/3myTHGmH/+85/mhhtuMN26dTO9e/c2999/v98l16HS1v6+9957RlKzj4qKCmPMqcvQL7/8ctOjRw/TvXt3M3ToULN48WLT0NDQoX377W9/a84//3wTExNjhg8fbj788EPfumuvvdZMmjTJr3758uXm4osvNjExMebSSy81a9as8Vvv9XrNo48+apKTk01sbKy57rrrzJ49ezqiK63Slv7279+/2X2Yl5dnjDHmiy++MCNHjjR9+vQxXbt2Nf379zeTJ08Oiy8HY9rW1xkzZvhqk5OTzY033ug3t4gx4b1v2/pzvHv3biPJ/PnPf26yrXDery39bWns36RJk8y1117b5DWXX365iYmJMRdccIHffECNzvT5hVJb+3vttdeesd6YU5fQp6SkmJiYGPONb3zD3HrrrWbfvn0d27EOZDOmg67ZBQAA6ECckwMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACzp/wPvNoSZEWAdSwAAAABJRU5ErkJggg==\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ws = np.arange(-.5,1.5,.1)\n",
    "losses = loss(ws, y)\n",
    "\n",
    "# Plot the weight and losses\n",
    "plt.scatter(ws, losses)\n",
    "\n",
    "# Original weight\n",
    "plt.plot(1, loss(1, y), 'ro')\n",
    "# New weight with learning rate\n",
    "lr = 5e-5\n",
    "new_weight = 1 - lr * gradient(1,y) * 80\n",
    "plt.plot(new_weight, loss(new_weight, y), 'go')"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "The new weight is around `.91`, and has lower error than the original weight of `1`. Note that the gradient with the new weight is very different from the gradient with the original weight.  With a weight of `1`, it was `21.98`, but it is now `15.65`.  It's still not `0`, so we're not at a global minimum.\n",
    "\n",
    "To get to the global minimum, we repeat gradient descent multiple times to \"descend\" to the correct weight and bias values.  The method looks like:\n",
    "\n",
    "- Predict y using the current parameters\n",
    "- Measure the gradient\n",
    "- Update $w$ and $b$ using the partial derivative\n",
    "\n",
    "We repeat until a local or global minimum, which has a gradient close to `0`.\n",
    "\n",
    "Of course, in linear regression, we're looking at hundreds or thousands of rows, not just a single data point.  In this case, we loop through the entire data set, and do gradient descent on each row.  We then repeat this until the gradient averaged over the entire training set is close to 0.\n",
    "\n",
    "We now know everything we need to get started implementing linear regression with gradient descent!"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Implementation\n",
    "\n",
    "Let's first load our data and split it into 3 sets:\n",
    "\n",
    "- A training set, which we'll use to train our algorithm\n",
    "- A validation set, which we'll use to measure error during training\n",
    "- A test set, which we'll use to evaluate the model after it has been fit\n",
    "\n",
    "Creating separate sets like this helps us avoid overfitting, where our model looks great in training, but doesn't work in the real world."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "PREDICTORS = [\"tmax\", \"tmin\", \"rain\"]\n",
    "TARGET = \"tmax_tomorrow\"\n",
    "\n",
    "# Ensure we get the same split every time\n",
    "np.random.seed(0)\n",
    "\n",
    "split_data = np.split(data, [int(.7 * len(data)), int(.85 * len(data))])\n",
    "(train_x, train_y), (valid_x, valid_y), (test_x, test_y) = [[d[PREDICTORS].to_numpy(), d[[TARGET]].to_numpy()] for d in\n",
    "                                                            split_data]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To train a linear regression algorithm using gradient descent, we need 4 elements:\n",
    "\n",
    "- A way to initialize our parameters (weights and biases)\n",
    "- A `forward` pass that computes predictions using the parameters\n",
    "- A loss function that measures the error of our predictions\n",
    "- A `backward` pass that updates our parameters to reduce the loss\n",
    "\n",
    "To initialize our weight parameters, we can use random initialization.  Random initialization helps the gradient descent algorithm descend to a global minimum efficiently (feel free to experiment with other initializations, like 0 or 1 to see what happens).\n",
    "\n",
    "It's common to initialize the bias to be `1` or `0`.\n",
    "\n",
    "We'll shrink the initial parameter values so we don't end up with predictions that are too large (this can cause gradient descent to take steps that are too large)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "outputs": [],
   "source": [
    "import math\n",
    "\n",
    "def init_params(predictors):\n",
    "    # Initialize model parameters\n",
    "    # k is a scaling factor that we use to reduce the weights and biases initially\n",
    "    k = math.sqrt(1 / predictors)\n",
    "    # We set a random seed so if we re-run this code, we get the same results\n",
    "    np.random.seed(0)\n",
    "    weights = np.random.rand(predictors, 1) * 2 * k - k\n",
    "    biases = np.ones((1, 1)) * 2 * k - k\n",
    "    return  [weights, biases]"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "We initialize one $w$ value for each of our predictors (`tmax`, `tmin`, and `rain`).  We initialize one bias for each target variable.  In this case, we're only predicting one value for each row `tmax_tomorrow`, so we only have one bias.\n",
    "\n",
    "In the forward pass of our network, we generate predictions by multiplying $w$ and $x$, then adding $b$:"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "outputs": [],
   "source": [
    "def forward(params, x):\n",
    "    weights, biases = params\n",
    "    # Multiply x values by w values with matrix multiplication, then add b\n",
    "    prediction = x @ weights + biases\n",
    "    return prediction"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "Once we have predictions, we need to calculate error.  We have two functions, one to calculate the loss, and one to calculate the loss gradient (which helps us update our parameters):"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "outputs": [],
   "source": [
    "def mse(actual, predicted):\n",
    "    # Calculate mean squared error\n",
    "    return np.mean((actual - predicted) ** 2)\n",
    "\n",
    "def mse_grad(actual, predicted):\n",
    "    # The derivative of mean squared error\n",
    "    return predicted - actual"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "In the backward pass of the network, we adjust $w$ and $b$ by the partial derivative times learning rate.  We will make predictions for our whole training set, then average the gradient across the whole set to compute the updates.  This will ensure that a single training example doesn't pull the gradient too far in one direction or another."
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [],
   "source": [
    "def backward(params, x, lr, grad):\n",
    "    # Multiply the gradient by the x values\n",
    "    # Divide x by the number of rows in x to avoid updates that are too large\n",
    "    w_grad = (x.T / x.shape[0]) @ grad\n",
    "    b_grad = np.mean(grad, axis=0)\n",
    "\n",
    "    params[0] -= w_grad * lr\n",
    "    params[1] -= b_grad * lr\n",
    "\n",
    "    return params"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "Finally, we'll write a loop that:\n",
    "\n",
    "- Makes predictions for the whole training set\n",
    "- Computes the gradient for each training example\n",
    "- Updates the parameters based on the gradient\n",
    "\n",
    "We will run the algorithm for several epochs - an epoch is each iteration over the training set.  Up to a point, more epochs will improve the accuracy.\n",
    "\n",
    "We will print out the loss on the validation set regularly so we can monitor the loss.  We know we have too many epochs if the validation loss is increasing instead of decreasing."
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 0 validation loss: 297.27540770706065\n",
      "Epoch 10000 validation loss: 22.647249675483117\n",
      "Epoch 20000 validation loss: 22.613777406314743\n",
      "Epoch 30000 validation loss: 22.581085439005864\n",
      "Epoch 40000 validation loss: 22.549154158580198\n"
     ]
    }
   ],
   "source": [
    "lr = 1e-4\n",
    "epochs = 50000\n",
    "params = init_params(train_x.shape[1])\n",
    "\n",
    "# Store weights and gradients so we can visualize\n",
    "# Not necessary for algorithm\n",
    "sample_rate = 100\n",
    "samples = int(epochs / sample_rate)\n",
    "historical_ws = np.zeros((samples, train_x.shape[1]))\n",
    "historical_gradient = np.zeros((samples,))\n",
    "\n",
    "for i in range(epochs):\n",
    "    predictions = forward(params, train_x)\n",
    "    grad = mse_grad(train_y, predictions)\n",
    "\n",
    "    params = backward(params, train_x, lr, grad)\n",
    "\n",
    "    # Store historical weights for visualization\n",
    "    if i % sample_rate == 0:\n",
    "        index = int(i / sample_rate)\n",
    "        historical_gradient[index] = np.mean(grad)\n",
    "        historical_ws[index,:] = params[0][:,0]\n",
    "\n",
    "    # Display validation loss\n",
    "    if i % 10000 == 0:\n",
    "        predictions = forward(params, valid_x)\n",
    "        valid_loss = mse(valid_y, predictions)\n",
    "\n",
    "        print(f\"Epoch {i} validation loss: {valid_loss}\")"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "We can display our final parameters to see how the regression worked.  This will show the weight for each predictor, as well as the bias:"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "outputs": [
    {
     "data": {
      "text/plain": "[array([[ 0.79210427],\n        [ 0.2450347 ],\n        [-0.06038591]]),\n array([[1.12700385]])]"
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "params"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "We can also visualize the path of gradient descent.  We're limited to three dimensions, but we can look at $w_{1}$ (the weight for `tmax`) and $w_{2}$ (the weight for `tmin`) against the gradient.  We can see that we started in an area of very negative gradient, where our predictions were lower than the actual temperatures.  This happened because $w_{1}$ and $w_{2}$ were set to randomly initialized values.  Both parameters then moved towards the global minimum over many epochs, as we tried to move to an area of `0` gradient."
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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mhBLhvQCI24wZufihoYGqNVqjI6Oor29HRUVFfle9hTyvZmnIh/rikQicZlgxFrRarVoampCOBzGwYMHodPpcrYmPsLVd5K48UgkEpjNZpjNZvh8PjgcDnzyySeQSqWwWCwwm80zWjdciQy5KJvu2Gta1sSJTPtIOz7u/xjLKpeldXy2REAul8clC3R1dQEA9u3bl1GyQCZEIhFO5+EkMudEpqenB3v27IHX60VNTQ1uvfVWXHfddSmL6PjUIDMRclXBx/XlolA0MbYilUqpqCRaK16vl1dinM9CWi4mY063qRJXWlNTE/r7++FwOHDixAmYTCZYLBaoVKqka8qXJQMA51Seg1pVLTo9nfS2zcc2pyUyXKybJAvIZDIMDAygqqoqLlmguro6IytxOoRizCx5/fXX8e///u84fvw4GhsbAQDPPPMMLr744mmvqPgsMgD/q/7ZhFieRFgmJyeptdLY2IjS0tKUr8snN+eZikQiocFsr9cLh8OB/fv3QyaTUeuGeQXNdbua6Y4tEomwpmUNHtrzEL1t6/GtePCzD0Ismt5K4TJwTlxZickCn3zyScpkgUzJdeA/J690zTXXwGq1QiaTobKyEl/72tfQ29sb95hDhw7h4osvpifkww8/nNFr1NbW4r777sPQ0BCeeOIJBAIBfPazn53RZOerpUDgc9U/G+siRYAHDx7Erl270NbWhlgshsbGRlx88cVYunQprFZrWl0T+Pg55RouNu5sjlleXo6WlhasXLkSNpsNfX19eOutt3D48GF4PJ5pCyZztd6189fG/e30OrHbsXvGY3PdPZopACRZYOXKlWhqasLIyAjeeecd7N+/H/39/VntXXMyu2zlypX48Y9/jMrKSjidTvzwhz/EDTfcgD179gA43W34iiuuwOWXX44nn3wShw8fxi233AKVSoVvf/vbab1GQ0MDGhoaABROq/904KsIZisy01krDQ0N01orM61HgBtmI97M3mjEuvnoo48gl8sRi8U4iYWmKwIt+hYs1C/EkcEj9LZNxzbhEusl0x4b4O58SyUAickCs+ksMCcnY/7gBz+g/19TU4O7774b1157LUKhEIqLi/Hss88iGAziqaeeglQqxYIFC3DgwAE8+uijaYsMk0IdWpYMPrvL0l3XxMQEFZWRkRE6M4ckX7A1NpqPn9NcgY2Nh1g3JHZz/Phx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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Create a figure and a 3D axis\n",
    "fig = plt.figure()\n",
    "ax = plt.axes(projection='3d')\n",
    "ax.view_init(20,50)\n",
    "\n",
    "# Plot the path of the optimization algorithm\n",
    "ax.plot3D(historical_ws[:,0], historical_ws[:,1], historical_gradient, 'green', linewidth=3, zorder=10)\n",
    "\n",
    "# Show the plot\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "We can also evaluate the algorithm on the test set to measure error:"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "outputs": [
    {
     "data": {
      "text/plain": "23.335214564774653"
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predictions = forward(params, test_x)\n",
    "mse(test_y, predictions)"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "In practice, the interactions between neural network layers will be complex enough that you will likely not get to a global minimum.  If the error is higher than you expect, you can try changing the learning rate (lowering it will take longer to converge, but may be more likely to reach a global minimum).  You can also try re-initializing the layer weights and retrying gradient descent.  Usually it is not a huge issue if you reach a local minimum instead of a global minimum, as long as your error is good enough for your application.\n",
    "\n",
    "You should now understand how gradient descent works to update parameters.  In this next notebook, we'll cover how to train a dense neural network using gradient descent!"
   ],
   "metadata": {
    "collapsed": false
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
